I. Field of the Invention
The present invention is a system and method for monitoring transactions between functional processes in an object-oriented environment. More specifically, the present invention relates to a method for allowing for the monitoring of transactions in an object-oriented environment having a "rich" object scheme.
II. Related Art
The importance of allowing different types of computer programs or "functional processes" to interact with one another has been appreciated for many years. For example, programs such as Symphony from the Lotus Corporation have been developed which combine functional processes which were traditionally implemented separately. Specifically, Symphony provides a spreadsheet, database, word processor and communications facility. Information generated from one functional process in Symphony can be transported and used by other functional processes. This allows the user a degree of flexibility not easily attainable using separate, non-communicative programs.
However, all-in-one programs such as Symphony suffer from various deficiencies. For example, a user may not like the word processor used in the all-in-one program, and may instead prefer to use another type of word processor. In addition, there may be tasks that the user would want to accomplish that are not supported by the all-in-one program. Thus, it was desirable to allow individual, independently designed functional processes to communicate with one another in a way that allows interchangeability of these processes.
One scheme which facilitates functional process interaction was implemented in the UNIX operating system. UNIX provided what is known as a "pipe" facility, which allows the output of a functional process to be received by the input of another functional process. In this way, data is "piped" from one functional process to another.
Such piping facilities as discussed above, however, also suffer from various deficiencies. For example, these facilities are not interactive. They do not allow the receiving functional process to send messages back to the sending functional process, and are thus limited in their flexibility. In addition, functional process are not permitted to easily interact in distributed environments such as local area networks.
Accordingly, schemes have been created which allow otherwise separate functional process to interactively communicate with each other, and which also allow for communication in a distributed system. These schemes form what can be described as an "environment," in which individual functional processes are accessible to all the other functional processes. Examples of such schemes are "SoftBench," "New Wave Office" and "ACTIS," all from Hewlett-Packard of Palo Alto, Calif., "Portable Common Tools Environment" (PCTE) developed by the European Computer Manufacturers Association, "A Tools Integration Standard" (ATIS) from Digital Equipment Corp. of Maynard, Mass. and Software Backplane from Atherton of Sunnyvale Calif.
The approaches used in the above-noted schemes can be divided into two sets. The first set comprises schemes which have rich data models. That is, the entities that this scheme views as objects are not limited to files. The second set comprises schemes which are based on public events. Schemes with rich data models rely on point to point communication between functional processes. Because of this, transactions between two functional processes cannot be monitored by other functional processes in an environment created using this type of scheme.
The second set, based on public events, have an impoverished data model (i.e. objects are limited to files). This expresses itself in two ways. Such environments insist that all objects in the environment be files. They also lack the "at most once" semantic for operations. That is, when an operation request event is generated, many functional processes may attempt to service the request. In many cases, if the operation is performed multiple times by different functional processes, incorrect results may be generated. Thus, existing schemes based upon public events are inferior and less useful that those based upon rich data models.
The point to point communication between functional processes is private in schemes using rich data models. In many software engineering environments it is important not only to accomplish services requested, but also to monitor the activity of the environment. In a system where communication between functional processes is private, the only way to monitor the activity of the environment is to modify the functional processes which perform the requested services to report the activity.
Often, functional processes are in the form of compiled programs which cannot be modified by the end user. When they can be modified, the changes are expensive and delicate. In an environment based upon public events, monitoring can be done by functional processes designed for that purpose. No change need be made to functional processes which request a service or those which provide one.
Software development has become a complex endeavor involving many types of objects stored in a variety of ways. Some design tools maintain a database of objects while others store data in simple data files. If communication between functional processes does not support a rich data model, some of these objects may not be directly available for manipulation. Thus, use of existing schemes based upon public events would severely hamper the development of software in such environments, and would likely produce inferior end-results.
Thus, what is needed is some mechanism which allows for monitoring transactions in an environment which utilizes a rich data model, without the need for expensive and delicate modifications to the functional process.